/**
 * Created by CodeTlan.
 * User: hellreuter
 * Date: 3/19/12
 * Time: 2:28 AM
 */

Ext.define('CT.controller.Militancias',{
    extend: 'Ext.app.Controller',
    views:[
        'militancia.Window',
        'militancia.Form',
        'militancia.Grid',
        'militancia.AddTraWindow',
        'militancia.AddTraGrid'
    ],
    stores: [
        'Militancias',
        'AddTrabajadores'
    ],
    models: [
        'Militancia',
        'AddTrabajador'
    ],
    requires: [
        'Ctc.view.DateMX'
    ],
    win: false,
    winaddtra: false,
    init: function(){
        this.control({
            'formmilitancia button[action=add]':{
                click: this.agregar
            },
            'gridmilitancia':{
                edit: this.editar,
                cellclick: this.clicked
            },
            'gridaddtra textfield': {
                specialkey: this.insertarTrabajador
            },
            'gridmilitancia button[action=addTrabajador]':{
                click: this.agregarTrabajadores
            },
            'gridmilitancia checkcolumn':{
                checkchange: this.activar
            },
            'gridaddtra':{
                cellclick: this.addTraClicked
            }
        });
    },
    lanzarVentana:function(anim,icon){
        if(!this.win){
            this.init();
            this.win = Ext.widget('winmilitancias',{animateTarget:anim,iconCls:icon});
        }
        this.win.show();
    },
    clicked:function(grid, cell, index, record){
        grid.panel.down('#btnTrabajadores').enable();
        switch(index){
            case 4: this.eliminar(grid,record.data);break;
        }
    },
    agregar: function(button){
        var form = button.up('form').getForm();
        var store = this.getMilitanciasStore();
        if(form.isValid()){
            form.submit({
                url: 'index.php/militancias/add',
                success: function(){
                    form.reset();
                    Notification.ok('Militancia Agregado',' ');
                    store.load();
                }
            });
        }
    },
    editar:function(editor, e){

        var valor=Ext.isDate(e.value) ? Ext.util.Format.date(e.value, 'Y-m-d') : e.value;

        var mods='{"'+e.field+'":"'+valor+'"}';
        Ext.Ajax.request({
            url: 'index.php/militancias/edit',
            params: {
                mod: mods,
                militancia_k: e.record.data.militancia_k,
                actividad: e.record.data.actividad,
                activo: e.record.data.activo
            },
            success: function(response){
                e.record.commit();
                Notification.ok('Militancia Modificado', ' ');
            }
        });
    },
    activar: function(check, index, activo){
        var store = this.getMilitanciasStore();
        var record = store.getAt(index);
        Ext.Ajax.request({
            url: 'index.php/militancias/active',
            params: {
                militancia_k: record.data.militancia_k,
                activo: activo?1:0
            },
            success: function(response){
                record.commit();
                Notification.ok('Militancia Modificado', ' ');
            }
        });
    },
    agregarTrabajadores:function(button){
        var objeto = button.up("grid").getSelectionModel().getSelection();
        var militancia = objeto[0].data.militancia_k;
        var actividad = objeto[0].data.actividad;
        var fecha = objeto[0].data.fecha;
        var fecha = Ext.util.Format.date(fecha,'d/m/Y');
        var titulo = fecha+' | '+actividad;

        this.winaddtra=Ext.widget('winaddtra',{iconCls:'militancias',militancia_k:militancia,title:titulo, modal: 'true'});
        this.winaddtra.show();
    },
    insertarTrabajador:function(field, e) {
        if(e.getKey() == e.ENTER) {

            var militancia = field.up('grid').militancia_k;
            var ficha = field.getValue();
            var store = field.up('grid').getStore();
            Ext.Ajax.request({
                url: 'index.php/addtrabajadores/add',
                params: {
                    militancia_k: militancia,
                    ficha: ficha
                },
                success: function(response){
                    store.load();
                    field.reset();
                    Notification.ok('Trabajador Agregado', ' ');
                },
                failure: function(){
                    Notification.error('No es posible agregar este trabajador',' ');
                }
            });
        }
    },
    addTraClicked:function(grid, cell, index, record){
        switch(index){
            case 3:this.addTraEliminar(grid,record.data);break;
        }
    },
    addTraEliminar:function(grid,record){
        Ext.Msg.confirm('Acción requerida','Está seguro que desea eliminar el Trabajador?',function(r){
            if(r=="yes"){
                var store=this.getAddTrabajadoresStore();
                Ext.Ajax.request({
                    url: 'index.php/addtrabajadores/delete',
                    params: {
                        militancia_trabajador_k: record.militancia_trabajador_k
                    },
                    success: function(response){
                        var sm = grid.getSelectionModel();
                        store.remove(sm.getSelection());

                        Notification.ok('Trabajador Eliminado',' ');
                    }
                });
            }
        },this);
    },
    eliminar:function(grid,record){
        Ext.Msg.confirm('Acción requerida','Está seguro que desea eliminar la militancia: '+record.actividad+'?',function(r){
            if(r=="yes"){
                var store=this.getMilitanciasStore();
                Ext.Ajax.request({
                    url: 'index.php/militancias/delete',
                    params: {
                        militancia_k: record.militancia_k
                    },
                    success: function(response){
                        var sm = grid.getSelectionModel();
                        store.remove(sm.getSelection());
                        Notification.ok('Militancia Eliminada',' ');
                    }
                });
            }
        },this);
    }
});